/*
ID: simplyz2
LANG: C
TASK: barn1
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_LEN 205
#define Min(a,b) ((a)<(b) ? (a) : (b))
int M, S, C;
int rt, stalls[MAX_LEN], diff[MAX_LEN];

int
asc_cmp(const void *arg1, const void *arg2)
{
	return (*(int *)arg1) - (*(int *)arg2);
}

int
desc_cmp(const void *arg1, const void *arg2)
{
	return (*(int *)arg2) - (*(int *)arg1);
}

void
init()
{
	int i;
	for(i=0; i<C; i++) 
		scanf("%d", stalls+i);
	qsort(stalls, C, sizeof(int), asc_cmp);
	rt = stalls[C-1] - stalls[0] + 1;
	for(i=1; i<C; i++)
		diff[i-1] = stalls[i] - stalls[i-1] - 1;
	qsort(diff, C-1, sizeof(int), desc_cmp);
}

void
solve()
{
	int i, up;
	up = Min(C-1, M-1);
	for(i=0; i<up; i++)
		rt -= diff[i];
	printf("%d\n", rt);
}

int
main(int argc, char **argv)
{
	freopen("barn1.in", "r", stdin);
	freopen("barn1.out", "w", stdout);
	while(scanf("%d %d %d", &M, &S, &C) != EOF) {
		init();
		solve();
	}
	return 0;
}
